package com.itlong.cloud.paymenthub;

import com.itlong.cloud.POJO.DTO.operate.OperateBusinessChargeDTO;
import com.itlong.cloud.POJO.DTO.operate.OperateProductModelManageGetDTO;
import com.itlong.cloud.POJO.VO.MessageVO;
import com.itlong.cloud.POJO.VO.operate.OperateBusinessOperationLogVO;
import com.itlong.cloud.POJO.VO.operate.OperateProductCodeGetVO;
import com.itlong.cloud.POJO.VO.operate.OperateProductModelManageGetVO;
import com.itlong.cloud.utils.page.Page;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * <desc>
 *      运营-产品型号管理暴露接口
 * </desc>
 *
 * @createDate 2020/11/27
 */
@FeignClient(name = "payment-hub-service")
public interface IOperateProductModelManageServiceClient {

    /**
     * <desc>
     *      获取业务日志列表
     * </desc>
     *
     * @return 标准格式化响应结果
     * @author Juguang.S
     * @createDate 2020/11/27
     */
    @PostMapping(path = "/operate/productModelManage/getLogPage")
    Page<OperateBusinessOperationLogVO> getLogPage(@RequestBody OperateBusinessChargeDTO operateBusinessChargeDTO) throws Exception;

    /**
     * <desc>
     *      分页获取任务书产品型号信息
     * </desc>
     *
     * @param operateProductModelManageGetDTO 获取任务书产品型号信息DTO
     * @return 分页任务书产品型号信息
     * @author pengwei
     * @createDate 2020/11/30
     */
    @PostMapping(path = "/operate/productModelManage/getPage")
    MessageVO  getPage(@RequestBody OperateProductModelManageGetDTO operateProductModelManageGetDTO) throws Exception;

    /**
     * <desc>
     *      获取任务书产品型号信息详情
     * </desc>
     *
     * @param operateProductModelManageGetDTO 获取任务书产品型号信息详情DTO
     * @return 任务书产品型号信息详情
     * @author pengwei
     * @createDate 2020/11/30
     */
    @PostMapping(path = "/operate/productModelManage/getOne")
    OperateProductModelManageGetVO   getOne(@RequestBody  OperateProductModelManageGetDTO  operateProductModelManageGetDTO)throws Exception;

    /**
     * <desc>
     *      任务书产品型号信息删除
     * </desc>
     *
     * @param dto 任务书产品型号dto
     * @return 任务书产品型号删除
     * @author pengwei
     * @createDate 2020/12/01
     */
    @PostMapping(path = "/operate/productModelManage/delete")
    Integer   delete(@RequestBody  OperateProductModelManageGetDTO  dto)throws Exception;

    /**
     * <desc>
     *      添加或者更新产品型号
     * </desc>
     *
     * @param dto 产品型号dto
     * @return
     * @author pengwei
     * @createDate 2020/12/01
     */
    @PostMapping(path = "/operate/productModelManage/saveOrUpdate")
    MessageVO saveOrUpdate(@RequestBody OperateProductModelManageGetDTO dto) throws Exception;

    /**
     * <desc>
     *      获取产品型号相关产品编码列表
     * </desc>
     *
     * @return 标准格式化响应结果
     * @author pengwei
     * @createDate 2020/12/02
     */
    @PostMapping(path = "/operate/productModelManage/getRelatedProcCodePage")
    Page<OperateProductCodeGetVO> getRelatedProcCodePage(@RequestBody OperateProductModelManageGetDTO dto) throws Exception;

    /**
     * <desc>
     *      产品编码列表
     * </desc>
     *
     * @return 标准格式化响应结果
     * @author pengwei
     * @createDate 2020/12/02
     */
    @PostMapping(path = "/operate/productModelManage/proCodeSearch")
    Page<OperateProductCodeGetVO> getProcCodePage(@RequestBody OperateProductModelManageGetDTO dto) throws Exception;
}
